Fix calculation of course (diff. between 32- and 64-bit system).
authoroliskoli <oliskoli@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Wed, 5 Apr 2006 22:26:57 +0000 (22:26 +0000)
committeroliskoli <oliskoli@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Wed, 5 Apr 2006 22:26:57 +0000 (22:26 +0000)
gpsbabel/garmin_txt.c

index 072f7c5ef06d12d57856e591ee78c7080b5916b4..512981b2ce2579c88a6e0de94d3ddb87389d2f69 100644 (file)
@@ -292,7 +292,11 @@ distance(double lat1, double lon1, double lat2, double lon2)       /* nearly MapSource
 static double
 course_rad(double lat1, double lon1, double lat2, double lon2)
 {
-       return mod(atan2(sin(lon1 - lon2) * cos(lat2), cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon1-lon2)), 2 * M_PI);
+       double v1, v2;
+       v1 = sin(lon1 - lon2) * cos(lat2);
+       v2 = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon1 - lon2);
+       if (fabs(v2) < 0.000000000000001) v2 = 0.0;     /* fix calculation diff. between 32- and 64-bit systems */
+       return atan2(v1, v2);
 }
 
 static double